package com.games.chaoshi;

import java.util.Scanner;

import static com.games.chaoshi.ConstantSup.kucundenglumima;
import static com.games.chaoshi.Store.listStore;

//库存管理类
public class StoreManager {
    Scanner input = new Scanner(System.in);


    boolean r = true;

    public void startStore() {
        do {
            System.out.println("请输入进入库存管理权限的密码：");

            String mima1 = input.next();
            if (mima1.equals(kucundenglumima)) {
                System.out.println("----->库存管理");
                listStore();
                System.out.println("请选择：1.入库操作 2.查看库存 3.返回上一级");
                int i = input.nextInt();

                switch (i) {
                    case 1:
                        ruku();
                        startStore();    //为了做一次循环！！！再次回到"----->库存管理"...
                        break;
                    case 2:
                        listStore();
                        startStore();
                        break;
                    case 3:
                        break;
                }

                r = false;

            } else {
                System.out.println("库存管理密码不正确，请输入正确的库存管理密码：");
            }

        } while (r);
    }

    //入库操作，会同时应用别的很多方法
    private void ruku() {
        System.out.println("----->入库操作");
        System.out.println("请输入需要入库商品的名称");
        String goodsName = input.next();

        /*根据  需要入库商品的名称 取得  该商品对象(引入方法);
         *(goodsName)已经示意此次的对象是goodsName<把goodsName赋给局部变量g>*/
        Goods goo = getGoodsByName(goodsName);    //调用下方虚线中的getGoodsBygoodsName()方法。★参数是对象的类型！
        //如果该商品在库存中不存在
        if (goo == null) {
            //在库存中 识别该商品(给予空间):
            goo = new Goods();        //调用Goods()
            goo.setGoodsId(generateGoodsId());
            goo.setName(goodsName);
            System.out.println("请输入该商品价格");
            double goodsprice = input.nextDouble();
            goo.setPrice(goodsprice);
            //在库存中 加入该商品:
            Store.kucun.add(goo);	/*★★★调用Store.kucun.add()方法的话，必须在
									创建 Goods集合对象函数的前面 加上“static”★★★*/
        }

        System.out.println("请输入商品数量");
        int count = input.nextInt();

        Goods goo2 = getGoodsByName(goodsName);
        //else的部分可省略.以下是内容：
        //在库存中 重新计算该商品数量:(此处考虑的比较多,注意！)
        goo2.setCount(goo2.getCount() + count);  //此句涵盖了 else的情况！！！g.getCount()指库存中的数量！
        //(g.getCount()+count)的值是 int类型(so可作为参数,与构造函数参数对应)！！！(注意分清楚get和set!!!)

        System.out.println("----->入库完成");
    }


    //----------------------------------------------------------
    //引入getGoodsBygoodsName()方法。按照该入库商品名称 查询该商品对象
    private Goods getGoodsByName(String goodsName) {
        Goods result = null;

        for (Goods t : Store.kucun) {  //遍历出(仓库类的)库存商品，用商品类(Goods类)的 具体t商品(局变)接收？？？？？？？？
            if (t.getName().equals(goodsName)) {  //调用Goods的getName()方法
                result = t;
            }
        }
        return result;
    } //与上面的的Goods g=getGoodsByName(goodsName);对应，上面的调用这个方法


    //自动生成商品编号
    private int generateGoodsId() {
        int i;
        int max = 0;
        //打擂台
        for (Goods g2 : Store.kucun) {
            if (g2.getGoodsId() > max) {
                max = g2.getGoodsId();
            }
        }
        i = max + 1;
        return i;//找到最大的商品编号后，+1不就是下一个新增商品 应有的编号？！！！
    } //与上面的的g.setId(generateGoodsId());对应，上面的调用这个方法

//----------------------------------------------------------





}
